table of contents
TERM(7) | Miscellaneous Information Manual | TERM(7) |
NAZWA¶
term - zasady nazywania typów terminali
OPIS¶
Zmienna środowiskowa TERM powinna standardowo zawierać nazwę typu terminala, konsoli lub urządzenia wyświetlającego, którego używasz. Informacja ta jest niezbędna dla wszystkich programów wyświetlających wyniki na ekranie, włączając w to Twój edytor czy program pocztowy.
Standardowa wartość zmiennej TERM będzie ustawiona poprzez inicjalizację lini poprzez plik /etc/inittab (Linux i System-V-podobne UNIXy) lub plik /etc/ttys (BSD UNIXy). To prawie zawsze wystarczy dla stacji roboczych czy konsoli mikrokomputerów.
Jeśli używasz lini telefonicznej, typ urządzenia dołączonego do niej może być różny. Starsze systemy UNIXowe ustawiają początkowo bardzo prosty typ terminala np. `dumb' lub `dialup'. Nowsze mogą używać terminala `vt100', odzwierciedlając rozpowszechnienie terminali DECa VT100-kompatybilnych i emulatorów z komputerów osobistych.
Nowoczesne telnet'y przekazują Twoją zmienną środowiskową TERM z lokalnego systemu do odległego. Mogą wystąpić problemy jeżeli terminfo lub termcap na odległym systemie nie zawiera definicji terminala kompatybilnej z Twoją, ale ta sytuacja jest rzadka i może być prawie zawsze uniknięta przez ustawienie typu terminala na `vt100' (zakładając, że rzeczywiście używasz VT100-podobnej konsoli, terminala, lub emulatora terminala.)
W każdym razie, możesz dowolnie zmieniać zmienną TERM ustawioną przez Twój system na dowolną wartość w profilu Twojej powłoki. Program tset(1) może być w tym pomocny; możesz mu podać zbiór reguł aby wydedukował lub zażądał podania typu terminala bazując na urządzeniu tty i prędkości przesyłu danych (baud rate).
Ustawienie zmiennej TERM własną wartością może być także użyteczne jeśli stworzyłeś własną definicję terminala włączając opcje (takie jak widzialny dzwonek (czyli błyśnięcie ekranu) lub podświetlenie) które mają zamienić standardowe ustawienia systemu.
Opisy typów terminali są przechowywane jako pliki zawierające dane opisujące ich możliwości w katalogu /usr/share/terminfo. Aby przejrzeć listę wszystkich nazw terminali rozpoznawanych przez system, wykonaj
toe | more
z promptu powłoki. Pliki te, opisujące możliwości terminali są przechowywane w formacie binarnym aby zapewnić optymalną prędkość dostępu do nich (odwrotnie niż w przypadku starego bazującego na tekście pliku termcap, który zastępują); aby sprawdzić jedną z pozycji musisz użyć komendy infocmp(1). Wywołaj ją następująco:
infocmp nazwa
gdzie nazwa jest nazwą typu terminala, który chcesz sprawdzić (i zarazem nazwą pliku w podkatalogu /usr/share/terminfo nazwanym od pierwszej litery typu terminala). Komenda ta wyświetla plik z opisem terminala w formacie tekstowym opisanym przez terminfo(5).
Pierwsza linia terminfo(5) opisuje nazwy, pod którymi terminfo rozpoznaje terminal, nazwy przedzielone są znakami `|', a ostatnia zakończona jest przecinkiem. Pierwsza nazwa jest podstawową nazwą terminala (primary name), i powinna być używana przy ustawianiu zmiennej TERM. Ostatnia nazwa jest w rzeczywistości opisem typu terminala (może zawierać spacje; inne muszą być pojedynczymi słowami). Nazwy pomiędzy pierwszą, a ostatnią (o ile istnieją) są aliasami nazwy terminala i zazwyczaj przechowywane są tam dawne nazwy terminala dla kompatybilności.
Istnieją pewne konwencje jak dobierać podstawowe nazwy terminala, które pozwalają aby były unikalne, a zarazem niosły w sobie pewną informację. Poniżej zamieszczony jest przewodnik, który krok po kroku wyjaśnia jak nazywać a także jak je rozumieć:
Najpierw wybierz główną nazwę. Powinna się ona składać z małej litery i następujących po niej do siedmiu małych liter bądź cyfr. Powinieneś unikać używania znaków przestankowych w głównych nazwach, ponieważ są one używane i interpretowane jako nazwy plików i meta-znaków powłoki (np. takie jak !, $, *, ? etc.), umieszczone w nich mogą spowodować dziwne i kłopotliwe zachowanie. Ukośnik (/), czy jakikolwiek inny znak, który może zostać zinterpretowany przez czyjś system plików (\, $, [, ]), jest szczególnie niebezpieczne (terminfo jest niezależne od platformy, więc wybór nazwy zawierającej znaki specjalne może któregoś dnia spowodować pewne problemy dla przyszłych użytkowników). Znak kropki (.) jest względnie bezpieczny o ile występuje co najwyżej jedna w nazwie głównej; niektóre starsze nazwy terminfo wykorzystują ją.
Nazwa główna terminala lub typu konsoli stacji roboczej powinna prawie zawsze zaczynać się od przedrostka sprzedawcy (np. hp dla Hewlett-Packard, wy dla Wyse, czy att dla terminali AT&T), lub popularną nazwą lini terminala (vt dla terminali typu VT od DECa, czy sun dla konsoli stacji roboczych Suna czy regent dla modeli ADDS Regent). Możesz wylistować drzewo terminfo aby zobaczyć jakie przedrostki są już w powszechnym użyciu. Po nazwie głównej powinien znajdować się, jeśli to potrzebne, numer modelu; a więc vt100, hp2621, wy50.
Nazwą główną dla konsoli typu PC-Unix powinna być nazwa systemu operacyjnego np. linux, bsdos, freebsd, netbsd. Nie powinna to być nazwa typu console czy jakakolwiek inna ogólna nazwa która może spowodować zamieszanie w środowisku o wielu platformach. Jeśli później następuje numer modelu, powinien wskazywać albo numer wersji systemu operacyjnego lub numer wersji sterownika konsoli.
Nazwą główna dla emulatora terminala (zakładając że nie pasuje do któregoś ze standardu ANSI lub typu vt100) powinna być nazwa programu lub z łatwością rozpoznawalny skrót (np. versaterm, ctrm).
Po nazwie głównej, możesz dodać dowolną lecz rozsądną ilość rozdzielonych łącznikiem przyrostków określających specjalne właściwości.
- 2p
- Ma dwie strony pamięci. Podobnie 4p, 8p, itd.
- mc
- Magic-cookie. Niektóre terminale (szczególnie starsze Wyse) mogą wspierać jedynie jeden atrybut bez utraty magic-cookie. Ich definicja w terminfo zazwyczaj jest sparowana z inną (która posiada ten przyrostek) aby wspierać dużą ilość atrybutów.
- -am
- Włącza auto-margines (prawostronne zawijanie)
- -m
- Tryb mono - wyłączenie wsparcia dla kolorów
- -na
- Bez strzałek - termcap ignoruje strzałki które w rzeczywistości są na terminalu, więc użytkownik może używać ich lokalnie.
- -nam
- Bez auto-marginesu - Wyłącz opcję am
- -nl
- Bez etykiet - wyłącz miękkie etykiety
- -nsl
- Bez lini statusu - zlikwiduj linię statusu
- -pp
- Ma port drukarki który jest używany
- -rv
- Terminal w odwróconym trybie video (czarny na białym)
- -s
- Użyj lini statusu.
- -vb
- Użyj widzialnego dzwonka (błysk) a nie krótkiego dzwięku.
- -w
- Szeroki; terminal jest w 132 kolumnowym trybie.
Standardowo, jeśli typ Twojego terminala jest jednym z wariantów, który ma za zadanie określić liczbę lini, przyrostek powinien znaleźć się tam pierwszy. Dla hipotetycznego terminala FuBarCo model 2317 w 30-liniowym trybie z odwrotnym wyświetlaniem (reverse video), lepszą nazwą byłaby fubar-30-rv (niż np. `fubar-rv-30').
Typy terminali, które nie są opisane jako samodzielne sekcje, a raczej jako składniki do dołączenia do innych sekcji poprzez use, są rozróżniane poprzez użycie znaków plus (+) a nie minus (-).
Komendy, które używają typu terminala aby kontrolować wyświetlanie często akceptują opcję -T, która pozwala podać typ terminala jako argument. Takie programy powinny skorzystać ze zmiennej środowiskowej TERM kiedy opcja -T jest nie podana.
PRZENOŚNOŚĆ¶
Dla maksymalnej kompatybilności ze starymi systemami UNIXowymi V, nazwy i aliasy powinny być unikalne w pierwszych 14 znakach.
PLIKI¶
- /usr/share/terminfo/?/*
- skąpilowane pliki zawierające opisy terminali
- /etc/inittab
- inicjalizacja lini tyy (AT&T-podobne UNIXy).
- /etc/ttys
- inicjalizacja lini tty (BSD-podobne UNIXy).
ZOBACZ TAKŻE¶
curses(3X), terminfo(5), term(/usr/share/terminfo).